package com.shujia.four;

import org.junit.Test;

public class StringBufferDemo {

    @Test
    public void test3() {
//    public int indexOf(String str)
//    public String substring(int start,int end)
        StringBuffer sb = new StringBuffer("长相思兮长相忆，短相思兮无穷极");
        String result = sb.substring(0, 3);
        System.out.println(result);

//    public int length() 返回数组里字符有效长度
        System.out.println(sb.length());
//    public char charAt(int n)
        char c = sb.charAt(0);
        System.out.println(c);
//    public void setCharAt(int n ,char ch)
        sb.setCharAt(1, '穷');
        System.out.println(sb);
    }


    /*
    落叶聚还散，寒鸦栖复惊。
    相思相见知何日？此时此夜难为情！
    入我相思门，知我相思苦，
    长相思兮长相忆，短相思兮无穷极，
     */
    @Test
    public void test2() {
//        StringBuffer delete(int start,int end)：删除指定位置的内容
        // String -> StringBuffer
        String str = "相思相见知何日？此时此夜难为情！";
        StringBuffer sb = new StringBuffer(str);
        System.out.println(sb);
        sb.delete(0, 4); //[start, end)
        System.out.println(sb);

//        StringBuffer replace(int start, int end, String str)：把[start,end)位置替换为str
        sb.replace(0, 4, "相思相见知何日？");
        System.out.println(sb);

//        StringBuffer insert(int offset, xxx)：在指定位置插入xxx
        sb.insert(sb.length(), "入我相思门，知我相思苦，");
        System.out.println(sb);

//        StringBuffer reverse() ：把当前字符序列逆转
        String s1 = "abcd";
        //StringBuffer -> String , 调用toString方法
        String s2 = new StringBuffer(s1).reverse().toString();
        System.out.println(s2);

    }

    @Test
    public void test1() {
        /*
         动态数组, 在保存数据的时候, 如果超过了数组的长度, 只能重新创建数据再次保存
         如果我们知道动态数组要容纳的数据长度, 可以在创建数组的时候就指定长度, 可以避免数组的多次创建
         和数据的复制(这一步是最消耗性能)
         */
        StringBuffer sb = new StringBuffer(100);
        sb.append("aaaaaaaaaaaaaaaaa");

        System.out.println(sb);
        sb = new StringBuffer("abc");
        System.out.println(sb);

    }

    public static void main(String[] args) {

        StringBuffer sb = new StringBuffer();
//        String str = "";
//        String result = str.concat("abc");

        sb.append("abc");
        System.out.println(System.identityHashCode(sb));
        sb.append("12341234123412");
        System.out.println(System.identityHashCode(sb));

        // sb.append("abc").append("def");


        System.out.println(sb);

    }
}
